home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / masm.arc / ROMBIOS.ASM < prev    next >
Assembly Source File  |  1985-03-06  |  10KB  |  211 lines

  1.                 SUBTTL ROM BIOS DATA AREAS AND EQUATES
  2. ;--------------------------------
  3. ;   EQUATES
  4. ;--------------------------------
  5. PORT_A          EQU     60H              ; 8255 PORT A ADDR
  6. PORT_B          EQU     61H              ; 8255 PORT B ADDR
  7. PORT_C          EQU     62H              ; 8255 PORT C ADDR
  8. CMD_PORT        EQU     63H
  9. INTA00          EQU     20H              ; 8259 PORT
  10. INTA01          EQU     21H              ; 8259 PORT
  11. EOI             EQU     20H
  12. TIMER           EQU     40H
  13. TIM_CTL         EQU     43H              ; 8253 TIMER CONTROL PORT ADDR
  14. TIMER0          EQU     40H              ; 8253 TIMER/CNTER 0 PORT ADDR
  15. TMINT           EQU     01               ; TIMER 0 INTR RECVD MASK
  16. DMA08           EQU     08               ; DMA STATUS REG PORT ADDR
  17. DMA             EQU     00               ; DMA CHANNEL 0 ADDRESS REG PORT ADDR
  18. MAX_PERIOD      EQU     540H
  19. MIN_PERIOD      EQU     410H
  20. KBD_IN          EQU     60H              ; KEYBOARD DATA IN ADDR PORT
  21. KBDINT          EQU     02               ; KEYBOARD INTR MASK
  22. KB_DATA         EQU     60H              ; KEYBOARD SCAN CODE PORT
  23. KB_CTL          EQU     61H              ; CONTROL BITS FOR KEYBOARD SENSE DATA
  24. ;--------------------------------
  25. ;  8088 INTERRUPT LOCATIONS
  26. ;--------------------------------
  27. ABS0            SEGMENT AT 0
  28. STG_LOC0        LABEL   BYTE
  29.                 ORG     2*4
  30. NMI_PTR         LABEL   WORD
  31.                 ORG     5*4
  32. INTS_PTR        LABEL   WORD
  33.                 ORG     8*4
  34. INT_ADDR        LABEL   WORD
  35. INT_PTR         LABEL   DWORD
  36.                 ORG     10H*4
  37. VIDEO_INT       LABEL   WORD
  38.                 ORG     1DH*4
  39. PARM_PTR        LABEL   DWORD            ; POINTER TO VIDEO PARMS
  40.                 ORG     01EH*4           ; INTERRUPT 1EH
  41. DISK_PTR        LABEL   DWORD
  42.                 ORG     01FH*4           ; LOCATION OF POINTER
  43. EXT_PTR         LABEL   DWORD            ; POINTER TO EXTENSION
  44.                 ORG     7C00H
  45. BOOT_LOCN       LABEL   FAR
  46. ABS0            ENDS
  47.         PAGE
  48. ;--------------------------------
  49. ;  STACK -- USED DURING INITIALIZATION ONLY
  50. ;--------------------------------
  51. STACK           SEGMENT AT 30H
  52.                 DW      128 DUP(?)
  53. TOS             LABEL   WORD
  54. STACK           ENDS
  55. ;--------------------------------
  56. ;  ROM BIOS DATA AREAS
  57. ;--------------------------------
  58. DATA            SEGMENT AT 40H
  59. RS232_BASE      DW      4 DUP(?)         ; ADDRESSES OF RS232 ADAPTERS
  60. PRINTER_BASE    DW      4 DUP(?)         ; ADDRESSES OF PRINTERS
  61. EQUIP_FLAG      DW      ?                ; INSTALLED HARDWARE
  62. MFG_TST         DB      ?                ; INITIALIZATION FLAG
  63. MEMORY_SIZE     DW      ?                ; MEMORY SIZE IN K BYTES
  64. IO_RAM_SIZE     DW      ?                ; MEMORY IN I/O CHANNEL
  65.         PAGE
  66. ;-------------------------------
  67. ;  KEYBOARD DATA AREAS
  68. ;-------------------------------
  69. KB_FLAG         DB      ?
  70. ;------ SHIFT FLAG EQUATES WITHIN KB_FLAG
  71. INS_STATE       EQU     80H              ; INSERT STATE IS ACTIVE
  72. CAPS_STATE      EQU     40H              ; CAPS LOCK STATE HAS BEEN TOGGLED
  73. NUM_STATE       EQU     20H              ; NUM LOCK STATE HAS BEEN TOGGLED
  74. SCROLL_STATE    EQU     10H              ; SCROLL LOCK STATE HAS BEEN TOGGLED
  75. ALT_STATE       EQU     08H              ; ALTERNATE SHIFT KEY DEPRESSED
  76. CTL_SHIFT       EQU     04H              ; CONTROL SHIFT KEY DEPRESSED
  77. LEFT_SHIFT      EQU     02H              ; LEFT SHIFT KEY DEPRESSED
  78. RIGHT_SHIFT     EQU     01H              ; RIGHT SHIFT KEY DEPRESSED
  79. ;-------------------------------
  80. KB_FLAG_1       DB      ?                ; SECOND BYTE OF KEYBOARD STATUS
  81. INS_SHIFT       EQU     80H              ; INSERT KEY IS DEPRESSED
  82. CAPS_SHIFT      EQU     40H              ; CAPS LOCK KEY IS DEPRESSED      
  83. NUM_SHIFT       EQU     20H              ; NUM LOCK KEY IS DEPRESSED      
  84. SCROLL_SHIFT    EQU     10H              ; SCROLL LOCK KEY IS DEPRESSED       
  85. HOLD_STATE      EQU     08H              ; SUSPEND KEY HAS BEEN TOGGLED
  86. ;-------------------------------
  87. ALT_INPUT       DB      ?                ; STORAGE FOR ALTERNATE KEYPAD ENTRY
  88. BUFFER_HEAD     DW      ?                ; POINTER TO HEAD OF KEYBOARD BUFFER
  89. BUFFER_TAIL     DW      ?                ; POINTER TO TAIL OF KEYBOARD BUFFER
  90. KB_BUFFER       DW      16 DUP(?)        ; ROOM FOR 15 ENTRIES
  91. KB_BUFFER_END   LABEL   WORD        
  92. ;------ HEAD = TAIL INDICATES THAT THE BUFFER IS EMPTY
  93. NUM_KEY         EQU     69               ; SCAN CODE FOR NUMBER LOCK
  94. SCROLL_KEY      EQU     70               ; SCROLL LOCK KEY
  95. ALT_KEY         EQU     56               ; ALTERNATE SHIFT KEY SCAN CODE
  96. CTL_KEY         EQU     29               ; SCAN CODE FOR CONTROL KEY
  97. CAPS_KEY        EQU     58               ; SCAN CODE FOR SHIFT LOCK
  98. LEFT_KEY        EQU     42               ; SCAN CODE FOR LEFT SHIFT 
  99. RIGHT_KEY       EQU     54               ; SCAN CODE FOR RIGHT SHIFT
  100. INS_KEY         EQU     82               ; SCAN CODE FOR INSERT KEY 
  101. DEL_KEY         EQU     83               ; SCAN CODE FOR DELETE KEY 
  102.         PAGE
  103. ;-------------------------------
  104. ;   DISKETTE DATA AREAS
  105. ;-------------------------------
  106. SEEK_STATUS     DB      ?                ; DRIVE RECALIBRATION STATUS
  107. ;                                        BIT 3-0 = DRIVE 3-0 NEEDS RECAL BEFORE
  108. ;                                        NEXT SEEK IF BIT IS = 0
  109. INT_FLAG        EQU     080H             ; INTERRUPT OCCURRENCE FLAG
  110. MOTOR_STATUS    DB      ?                ; MOTOR STATUS
  111. ;                        BIT 3-0 = DRIVE 3-0 IS CURRENTLY RUNNING
  112. ;                        BIT 7   = CURRENT OPERATION IS A WRITE, REQUIRES DELAY
  113. MOTOR_COUNT     DB      ?                ; TIME OUT COUNTER FOR DRIVE TURN OFF
  114. MOTOR_WAIT      EQU     37         ; TWO SECONDS OF COUNTS FOR MOTOR TURN OFF
  115. ;
  116. DISKETTE_STATUS DB      ?          ; SINGLE BYTE OF RETURN CODE INFO FOR STATUS
  117. TIME_OUT        EQU     80H        ; ATTACHMENT FAILED TO RESPOND
  118. BAD_SEEK        EQU     40H        ; SEEK OPERATION FAILED
  119. BAD_NEC         EQU     20H        ; NEC CONTROLLER HAS FAILED
  120. BAD_CRC         EQU     10H        ; BAD CRC ON DISKETTE READ
  121. DMA_BOUNDARY    EQU     09H        ; ATTEMPT TO DMA ACROSS 64K BOUNDARY
  122. BAD_DMA         EQU     08H        ; DMA OVERRUN ON OPERATION
  123. RECORD_NOT_FND  EQU     04H        ; REQUESTED SECTOR NOT FOUND
  124. WRITE_PROTECT   EQU     03H        ; WRITE ATTEMPTED ON WRITE PROT DISK
  125. BAD_ADDR_MARK   EQU     02H        ; ADDRESS MARK NOT FOUND
  126. BAD_CMD         EQU     01H        ; BAD COMMAND PASSED TO DISKETTE I/O
  127. ;
  128. NEC_STATUS      DB      7 DUP(?)   ; STATUS BYTES FROM NEC
  129. ;--------------------------------
  130. ;   VIDEO DISPLAY DATA AREA
  131. ;--------------------------------
  132. CRT_MODE        DB      ?          ; CURRENT CRT MODE
  133. CRT_COLS        DW      ?          ; NUMBER OF COLUMNS ON SCREEN
  134. CRT_LEN         DW      ?          ; LENGTH OF REGEN IN BYTES
  135. CRT_START       DW      ?          ; STARTING ADDRESS IN REGEN BUFFER
  136. CURSOR_POSN     DW      8 DUP(?)   ; CURSOR FOR EACH OF UP TO 8 PAGES
  137. CURSOR_MODE     DW      ?          ; CURRENT CURSOR MODE SETTING
  138. ACTIVE_PAGE     DB      ?          ; CURRENT PAGE BEING DISPLAYED
  139. ADDR_6845       DW      ?          ; BASE ADDRESS FOR ACTIVE DISPLAY CARD
  140. CRT_MODE_SET    DB      ?          ; CURRENT SETTING OF THE 3X8 REGISTER
  141. CRT_PALLETTE    DB      ?          ; CURRENT PALLETTE SETTING COLOR CARD
  142.         PAGE
  143. ;--------------------------------
  144. ;   CASSETTE DATA AREA
  145. ;--------------------------------
  146. EDGE_CNT        DW      ?          ; TIME COUNT AT DATA EDGE
  147. CRC_REG         DW      ?          ; CRC REGISTER
  148. LAST_VAL        DB      ?          ; LAST INPUT VALUE
  149. ;--------------------------------
  150. ;   TIMER DATA AREA
  151. ;--------------------------------
  152. TIMER_LOW       DW      ?          ; LOW WORD OF TIMER COUNT
  153. TIMER_HIGH      DW      ?          ; HIGH WORD OF TIMER COUNT
  154. TIMER_OFL       DB      ?          ; TIMER HAS ROLLED OVER SINCE LAST READ
  155. ;COUNTS_SEC     EQU     18
  156. ;COUNTS_MIN     EQU     1092
  157. ;COUNTS_HOUR    EQU     65543
  158. ;COUNTS_DAY     EQU     1573040 = 1800B0H
  159. ;-------------------------------
  160. ;   SYSTEM DATA AREA
  161. ;-------------------------------
  162. BIOS_BREAK      DB      ?          ; BIT 7 = 1 IF BREAK KEY HAS BEEN DEPRESSED
  163. RESET_FLAG      DW      ?          ; WORD = 1234H IF KEYBOARD RESET UNDERWAY
  164. DATA            ENDS
  165. ;
  166. ;--------------------------------
  167. ;   EXTRA DATA AREA
  168. ;--------------------------------
  169. XXDATA          SEGMENT AT 50H
  170. STATUS_BYTE     DB      ?
  171. XXDATA          ENDS
  172. ;
  173. ;--------------------------------
  174. ;   VIDEO DISPLAY BUFFER
  175. ;--------------------------------
  176. VIDEO_RAM       SEGMENT AT 0B800H
  177. REGEN           LABEL   BYTE
  178. REGENW          LABEL   WORD
  179.                 DB      16384 DUP(?)
  180. VIDEO_RAM       ENDS
  181. ;
  182. ;--------------------------------
  183. ;   ROM RESIDENT CODE
  184. ;--------------------------------
  185. ROMCODE         SEGMENT AT 0F000H
  186.                 DB      57344 DUP(?)             ; FILL LOWEST 56K
  187.                 DB      '5700051 CORP. IBM 1981' ; COPYRIGHT NOTICE
  188. ROMCODE         ENDS
  189. ;
  190. ;--------------------------------
  191. ;   PROGRAM SEGMENT PREFIX 
  192. ;--------------------------------
  193. ;
  194. PROGRAM        SEGMENT          
  195. INT20        DW                      ;INT 20 for DOS return
  196. MEMORYSIZE    DW            ;TOTAL MEMORY SIZE
  197. CALLDOS_FAR    DB    5 DUP(?)    ; LONG CALL DOS DISPATCHER
  198. TERMADDR    DB    4 DUP(?)    ; TERMINATE ADDRESS (ip,cs)
  199. CTRLBREAK      DB    4 DUP(?)    ; ctrl_break EXIT ADDRESS
  200. RESERVED    DB    4ah DUP(?)    ; RESERVED AREA
  201. FCB_ONE        DB    10H DUP(?)    ; unopened fcb #1
  202. FCB_TWO        DB    10H DUP(?)    ; unopened fcb #2
  203. PARM_LENGTH    DB            ; LENGTH OF PARAMETERS
  204. PARM_FIELD    DB    19 DUP(?)    ; PARAMETER STRING DATA
  205. ;
  206.          SUBTTL
  207.                 PAGE
  208.                 ORG    100H        ; DEFAULT ENTRY ADDRESS
  209. PROGRAM_ENTRY    EQU    $
  210.  
  211.